﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using FeiraGame_XNA.src.core;

namespace FeiraGame_XNA
{
    public class Tile :  InterfaceObject
    {
        
        bool collidable;
        bool horizontal;
        bool vertical;
        bool diagonal;

        /// <summary>
        /// Enum representando o tipo de tiles disponíveis
        /// </summary>
        public enum types { Empty, PlatformStart, PlatformMiddle, PlatformEnd, Wall, Floor };

        /// <summary>
        /// Construtor de um tile, precisamos informar a posição, se é colidível e que tipo de colisão
        /// pode ocorrer (horizontal, vertical ou diagonal)
        /// </summary>
        public Tile(Rectangle pos, bool collidable, bool horizontal, bool vertical, bool diagonal)
        {
            this.RectPosition = pos;
            this.Position = new Vector2(RectPosition.X, RectPosition.Y);
            this.collidable = collidable;
            this.horizontal = horizontal;
            this.vertical = vertical;
            this.diagonal = diagonal;
        }

        /// <summary>
        /// Retorna ou seta a posição do tile
        /// </summary>
        public Rectangle RectPosition
        {
            get;
            set;
        }

        /// <summary>
        /// Seta ou informa se o tile é colidível
        /// </summary>
        public bool Collidable
        {
            get { return collidable; }
            set { collidable = value; }
        }

        /// <summary>
        /// Seta ou informa se o tile possuir colisão vertical
        /// </summary>
        public bool Vertical
        {
            get { return vertical; }
            set { vertical = value; }
        }

        /// <summary>
        /// Seta ou informa se o tile possuir colisão horizontal
        /// </summary>
        public bool Horizontal
        {
            get { return horizontal; }
            set { horizontal = value; }
        }

        /// <summary>
        /// Seta ou informa se o tile possuir colisão diagonal
        /// </summary>
        public bool Diagonal
        {
            get { return diagonal; }
            set { diagonal = value; }
        }
    }
}
